package dto;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import type.EstadoOrdenType;
import type.EstadoSolitudType;
import type.NotificacionType;




import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement (name="despacho")
@XmlAccessorType(XmlAccessType.FIELD)
public class OrdenDespachoDTO implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	private EstadoOrdenType estado;
	@XmlElement
	private Date fecha;
	@XmlElement
	private Integer id;
	@XmlElement
	private Integer idModulo;
	@XmlElement(name="nroDespacho")
	private Integer numeroDespacho;
	@XmlElement(name="nroVenta")
	private Integer numeroVenta;

	private List<SolicitudArticuloDTO> solicitudes;
	private NotificacionType logisticaMonitoreoEstado;
	private NotificacionType portalWebEstado;
	
	
	public void agregarItem(SolicitudArticuloDTO solicitudes){
		if (this.solicitudes==null) {
			this.solicitudes = new ArrayList<SolicitudArticuloDTO>();
		}
		this.solicitudes.add(solicitudes);
	}

	public EstadoOrdenType getEstado() {
		return estado;
	}


	public Date getFecha() {
		return fecha;
	}

	public Integer getId() {
		return id;
	}

	public Integer getIdModulo() {
		return idModulo;
	}

	public Integer getNumeroDespacho() {
		return numeroDespacho;
	}

	public Integer getNumeroVenta() {
		return numeroVenta;
	}

	public List<SolicitudArticuloDTO> getSolicitudes() {
		
		if (this.solicitudes==null) {
			this.solicitudes = new ArrayList<SolicitudArticuloDTO>();
		}return solicitudes;
	}

	public SolicitudArticuloDTO getSolicitudPorId(Integer idSolicitud) {
		if (this.solicitudes!=null) {
			for (SolicitudArticuloDTO s : this.solicitudes) {
				if (s.getId()==idSolicitud) {
					return s;
				}
			}
		}
		return null;
	}

	public void setEstado(EstadoOrdenType estado) {
		this.estado = estado;
	}




	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public void setId(Integer id) {
		this.id = id;
	}
	
	public void setIdModulo(Integer idModulo) {
		this.idModulo = idModulo;
	}

	public void setNumeroDespacho(Integer numeroDespacho) {
		this.numeroDespacho = numeroDespacho;
	}

	public void setNumeroVenta(Integer numeroVenta) {
		this.numeroVenta = numeroVenta;
	}

	public void setSolicitudes(List<SolicitudArticuloDTO> solicitudes) {
		this.solicitudes = solicitudes;
	}

	public boolean solicitudesCompletas() {
		if (this.solicitudes!=null) {
			for (SolicitudArticuloDTO s : this.solicitudes) {
				if (!s.getEstado().equals(EstadoSolitudType.COMPLETA)) {
					return false;
				}
			}
		}
		
		return true;
	}

	public NotificacionType getLogisticaMonitoreoEstado() {
		return logisticaMonitoreoEstado;
	}

	public void setLogisticaMonitoreoEstado(
			NotificacionType logisticaMonitoreoEstado) {
		this.logisticaMonitoreoEstado = logisticaMonitoreoEstado;
	}

	public NotificacionType getPortalWebEstado() {
		return portalWebEstado;
	}

	public void setPortalWebEstado(NotificacionType portalWebEstado) {
		this.portalWebEstado = portalWebEstado;
	}
	
	
}
